#!/usr/bin/env node

const fs = require('fs');
const xlsx = require('xlsx');
const { program } = require('commander');

program
  .version('0.1.0')
  .description('CLI утилита для конвертации XLS в JSON')
  .requiredOption('-f, --file <path>', 'Путь к XLS файлу')
  .option('-o, --output <path>', 'Путь для сохранения JSON файла')
  .parse(process.argv);

const options = program.opts();

if (!options.file) {
  console.error('Необходимо указать путь к XLS файлу');
  process.exit(1);
}

// Функция для преобразования данных из XLS в JSON согласно указанным правилам
function convertXlsToJson(filePath) {
  const workbook = xlsx.readFile(filePath);
  const sheetName = workbook.SheetNames[1]; // Берем второй лист
  const worksheet = workbook.Sheets[sheetName];
  const jsonData = xlsx.utils.sheet_to_json(worksheet, {
    header: 1,
    range: 4 // Пропускаем первые три строки
  });

  const jsonResult = jsonData.map(row => ({
    code: row[1], // Данные из столбца B
    count: row[4], // Данные из столбца E
    freeFloat: row[5], // Данные из столбца F
    weight: row[7] // Данные из столбца H
  }));

  return jsonResult.filter(row => !!row.weight);
}

// Получаем путь к XLS файлу из аргументов командной строки
const xlsFilePath = options.file;

// Преобразуем XLS в JSON
const jsonResult = convertXlsToJson(xlsFilePath);

// Получаем путь для сохранения JSON файла (если указан)
const outputFilePath = options.output || 'output.json';

// Сохраняем JSON в файл
fs.writeFileSync(outputFilePath, JSON.stringify(jsonResult, null, 2));

console.log(`Файл успешно сконвертирован в JSON: ${outputFilePath}`);
